package com.blog.mapper;

import com.blog.entity.Banner;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @author 黄嘉强
 * @Mapper 用于描述数据层接口，用于告诉系统底层，为此接口创建实现类对象，
 * 然后底层通过实现类对象执行数据访问操作。
 */
@Mapper
public interface BannerMapper {

    /**
     * 查询表中所有的Banner信息,
     * 然后每行记录映射为一个Banner对象，
     * 多个Banner存储到List集合。
     *
     * @Select 注解用于描述方法并定义SQL查询语句。
     * @return 查询到的结果集赋值为Banner的List集合对象，返回该集合对象。
     */
    @Select("select id,url from banner")
    List<Banner> list();

    /**
     * 根据id查询banner表中的url
     * @param id 这个参数会自动填充@Select语句中的#{id}。
     * @return 查询到的url。
     */
    @Select("select url from banner where id =#{id}")
    String selectUrlById(int id);

    /**
     * 向banner表中插入数据
     * @param banner banner对象中的url属性会自动赋值给@Insert注解中sql语句里面的#{url}
     */
    @Insert("insert into banner values(null,#{url})")
    void insert(Banner banner);

    /**
     * 根据id删除banner表中数据
     * @param id 这个参数会自动填充@Select语句中的#{id}
     */
    @Delete("delete from banner where id=#{id}")
    void deleteById(int id);
}
